package cn.com.b2office.dao;

import java.util.List;

import cn.com.b2office.domain.Category;

public interface CategoryDao {
	/** CRUD */
	String createCategory(Category category);

	Category getCategory(String categoryId);

	void updateCategory(Category category);

	void removeCategory(String categoryId);

	void removeCategory(Category category);

	/** ��ʾ���е���Ʒ���� */
	List<Category> listAllCategories();

	/** ��ȡ�÷���ĸ����࣬��û�з���null */
	Category getParentCategory(String categoryId);

	/** �г����Ʒ������������ȷ���,�����ղ�ι�ϵ���� */
	List<Category> listAncestries(String categoryId);

	/** �г���Ʒ���������е�һ������Ͷ������࣬���Ұ��ղ�ι�ϵ���к� */
	List<Category> listCascadeCategories();

	/**
	 * 寻找该分类下的所有直接子类
	 * 
	 * @param parentCategoryId
	 * @return
	 */
	List<Category> findDirectChilds(String parentCategoryId);

	/**
	 * 寻找该分类下的所有子类以及子类的子类
	 * 
	 * @param parentCategoryId
	 * @return
	 */
	List<Category> findAllChilds(String parentCategoryId);
	
	/**
	 * 获取最顶层的商品分类
	 * @return
	 */
	List<Category> findTopLevelCategories();

}
